package pe.com.astech.web.service;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import pe.com.astech.web.bean.EmpleadoBean;
import pe.com.astech.web.bean.ExperienciaBean;
import pe.com.astech.web.dao.EmpleadoDao;
import pe.com.astech.web.dao.impl.MaquinariaDaoImpl;
import pe.com.astech.web.util.Constantes;

@Service
public class EmpleadoServiceImpl implements EmpleadoService {

	@Autowired
	public EmpleadoDao empleadoDao;
	
	private static final Log log = LogFactory.getLog(EmpleadoServiceImpl.class);

	@Override
	public List<EmpleadoBean> buscarEmpleado(String mensajeTrazabilidad,
			String nombre, String perfilOperario) {
		
		List<EmpleadoBean> listOperario = empleadoDao.buscarEmpleado(mensajeTrazabilidad, nombre, perfilOperario);
		
		return listOperario;
	}

	@Override
	public EmpleadoBean obtenerEmpleadoYExp(String mensajeTrazabilidad,
			String id_empleado, String perfilOperario) {

		EmpleadoBean empleadoBean = empleadoDao.obtenerEmpleado(mensajeTrazabilidad, id_empleado, perfilOperario);
		List<ExperienciaBean>listExperiencia = empleadoDao.obtenerExperiencia(mensajeTrazabilidad, id_empleado, perfilOperario);
		
		empleadoBean.setListExperiencia(listExperiencia);
		
		return empleadoBean;
	}

	@Override
	public List<ExperienciaBean> listaEliminarExpEmpleado(
			String mensajeTrazabilidad,
			List<ExperienciaBean> empleadoListExperiencia, String id_empleado,
			String id_herramienta) {

		List<ExperienciaBean> clonEmpleadoListExperiencia = new ArrayList<ExperienciaBean>();
		
		for(ExperienciaBean experienciaBean:empleadoListExperiencia){
			if(experienciaBean.getId_empleado().equals(id_empleado) && experienciaBean.getId_herramienta().equals(id_herramienta)){
				clonEmpleadoListExperiencia.add(experienciaBean);
			}
		}
		
		return clonEmpleadoListExperiencia;
	}

	@Override
	public List<EmpleadoBean> guardarExpEmpleado(String mensajeTrazabilidad,EmpleadoBean empleadoBean,
			List<ExperienciaBean> empleadoListExperiencia,
			List<ExperienciaBean> removeEmpleadoListExperiencia) {


		if(removeEmpleadoListExperiencia!=null){
			for(ExperienciaBean experienciaBean:removeEmpleadoListExperiencia){
				experienciaBean.setId_empleado(empleadoBean.getId_empleado());
				empleadoDao.eliminarExpEmpleado(mensajeTrazabilidad, experienciaBean);
			}
		}
		
		for(ExperienciaBean experienciaBean:empleadoListExperiencia){
			experienciaBean.setId_empleado(empleadoBean.getId_empleado());
			empleadoDao.guardarExpEmpleado(mensajeTrazabilidad, experienciaBean);
		}
		
		List<EmpleadoBean> listOperario = empleadoDao.buscarEmpleado(mensajeTrazabilidad, Constantes.VACIO, Constantes.PERFIL_OPERARIO);
		
		return listOperario;
	}
	
}
